package recursion;

/**
 * @Author Stringzhua
 * @Date 2024/2/28 19:28
 * description:
 */
public class HanoiTower {
    public static void main(String[] args) {
        Tower tower = new Tower();
        tower.move(5,'A','B','C');
    }
}

class Tower {
    //num表示要移动的个数(a,b,c分别表示A、B、C塔)
    public void move(int num, char a, char b, char c) {
        //如果只有一个盘 num=1
        if (num == 1) {
            System.out.println(a + "->" + c);
        } else {//如果有多个盘,可以看成两个盘,最下面和上面的所有盘
            //1.先移动所有的盘到B,借助C
            move(num - 1, a, c, b);
            //2.把最下面的这个盘,移动到C
            System.out.println(a + "->" + c);
            //3.再把B塔的所有盘移动到C,借助A塔
            move(num - 1, b, a, c);
        }
    }
}
